﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Bastanteo.Negocio;
using Bastanteo.Domain;

namespace Bastanteo.Controllers
{
    public class RepresentanteController : Controller
    {

        #region Dependencias que se inyectan con Spring.NET
        IAdministracionService AdminService { get; set; }
        #endregion

        
        public ActionResult Index()     // Genera la vista Views/Rol/Index.aspx
        {
            ICollection<Representante> modelo = AdminService.ListarRepresenta();
            TempData["Cargos"] = ListadoCargos();
            TempData["Grupos"] = ListadoGrupos();
            return View(modelo);
        }
        [HttpPost]
        public ActionResult Buscar(FormCollection formulario)
        {
            string Codigo = (formulario["txtBuscarCod"] == string.Empty ? null : formulario["txtBuscarCod"]);
            string Usuario = (formulario["txtBuscarUsu"] == string.Empty ? null : formulario["txtBuscarUsu"]);
            int rolCodigo = 0;
            if (formulario["RolCodigo"] != null && formulario["RolCodigo"] != string.Empty)
                rolCodigo = int.Parse(formulario["RolCodigo"]);

            ICollection<Usuario> modelo = AdminService.ListarUsuariosXBusqueda(Codigo, Usuario, rolCodigo);
            TempData["Cargos"] = ListadoCargos();
            return View("Index", modelo);
        }
        public ActionResult Creacion()       // Genera la vista Views/Local/Creacion.aspx
        {
            TempData["Cargos"] = ListadoCargos();
            TempData["Grupos"] = ListadoGrupos();
            return View();
        }
        //[HttpPost]
        //public ActionResult Crear(FormCollection collection) // Recibe el formulario de Creacion.aspx
        //{
        //    int nCodigo = int.Parse(((string)collection["Cargocodigo"] == string.Empty ? "0" : (string)collection["Cargocodigo"]));
        //    Representante objACrear = new Representante()
        //    {
        //        RepresentanteNumDoc = ((string)collection["RepresentanteNumDoc"] == string.Empty ? null : (string)collection["RepresentanteNumDoc"]),
        //        RepresentanteTipoDoc = ((string)collection["RepresentanteTipoDoc"] == string.Empty ? null : (string)collection["RepresentanteTipoDoc"]),
        //        RepresentanteNombre = ((string)collection["RepresentanteNombre"] == string.Empty ? null : (string)collection["RepresentanteNombre"]),
        //        RepresentanteApellidos = ((string)collection["RepresentanteApellidos"] == string.Empty ? null : (string)collection["RepresentanteApellidos"]),
        //        Rol = AdminService.ObtenerRol(nCodigo),
        //    };

        //    try
        //    {
        //        // Coordinamos con el negocio para la funcionalidad
        //        Usuario objCreado = AdminService.CrearUsuario(objACrear);
        //        TempData["mensaje"] = "Rol " + objCreado.UsuarioId + " creado exitosamente";
        //        return RedirectToAction("Index"); // Todo bien, a la lista
        //    }
        //    catch (Exception ex)
        //    {
        //        ModelState.AddModelError(string.Empty, ex.Message); // Agregamos el error a mostrarse
        //        TempData["Roles"] = ListadoRoles();
        //        return View("Creacion", objACrear); // Problemas! De nuevo a Creacion.aspx
        //    }
        //}

        private ICollection<SelectListItem> ListadoCargos()
        {
            ICollection<SelectListItem> Cargos = new List<SelectListItem>();
            Cargos.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
            foreach (Cargo obj in AdminService.ListarCargo())
                Cargos.Add(new SelectListItem()
                {
                    Value = obj.CargoId.ToString(),
                    Text = obj.CargoDescripcion
                });
            return Cargos;
        }
        private ICollection<SelectListItem> ListadoGrupos()
        {
            ICollection<SelectListItem> Grupos = new List<SelectListItem>();
            Grupos.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
            foreach (Grupo obj in AdminService.ListarGrupos())
                Grupos.Add(new SelectListItem()
                {
                    Value = obj.GrupoId.ToString(),
                    Text = obj.GrupoDescripcion
                });
            return Grupos;
        }

        //private ICollection<SelectListItem> ListadoCliente()
        //{
        //    ICollection<SelectListItem> Clientes = new List<SelectListItem>();
        //    Clientes.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
        //    foreach (Cliente obj in AdminService.Listarcl())
        //        Clientes.Add(new SelectListItem()
        //        {
        //            Value = obj.ClienteId.ToString(),
        //            Text = obj.ClienteRazonSocial
        //        });
        //    return Clientes;
        //}

    }
}
